home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / ODF / Found / FWDebug / Sources / FWPriDeb.cpp < prev    next >
Encoding:
Text File  |  1995-11-08  |  6.1 KB  |  221 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWPriDeb.cpp
  4. //    Release Version:    $ 1.0d11 $
  5. //
  6. //    Copyright:    (c) 1993, 1995 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWFound.hpp"
  11.  
  12. // Need to include first so that FW_DEBUG is properly defined
  13. #ifndef FWPRIDEB_H
  14. #include "FWPriDeb.h"
  15. #endif
  16.  
  17. #ifdef FW_DEBUG
  18.  
  19. #ifndef FWPRISTR_H
  20. #include "FWPriStr.h"
  21. #endif
  22.  
  23. #ifndef FWPRIMEM_H
  24. #include "FWPriMem.h"
  25. #endif
  26.  
  27. #if defined(FW_BUILD_MAC) && !defined(__TYPES__)
  28. #include <Types.h>
  29. #endif
  30.  
  31. #if defined(THINK_CPLUS) && !defined(__PASCAL__)
  32. #include <Pascal.h>
  33. #endif
  34.  
  35. #if defined(FW_BUILD_WIN) && !defined(_INC_WINDOWS)
  36. #include <Windows.h>
  37. #endif
  38.  
  39. #if FW_LIB_EXPORT_PRAGMAS
  40. #pragma lib_export on
  41. #endif
  42.  
  43. FW_CDebugConsole *FW_CDebugConsole::gDebugConsole = &FW_CDebugConsole::sDebugConsole;
  44. FW_CDebugConsole  FW_CDebugConsole::sDebugConsole;
  45.  
  46. //----------------------------------------------------------------------------------------
  47. // FW_CDebugConsole::FW_CDebugConsole
  48. //----------------------------------------------------------------------------------------
  49.  
  50. FW_CDebugConsole::FW_CDebugConsole()
  51.     : fBufferStream(fBuffer, kBufferSize)
  52. {
  53.     fFatalErrorStream = &fBufferStream;
  54.     fWarningStream = &fNullStream;
  55.     fNotificationStream = &fNullStream;
  56. }
  57.  
  58. //----------------------------------------------------------------------------------------
  59. // FW_CDebugConsole::~FW_CDebugConsole
  60. //----------------------------------------------------------------------------------------
  61.  
  62. FW_CDebugConsole::~FW_CDebugConsole()
  63. {
  64. }
  65.  
  66. //----------------------------------------------------------------------------------------
  67. // FW_CDebugConsole::GetConsole
  68. //----------------------------------------------------------------------------------------
  69.  
  70. FW_CDebugConsole* FW_CDebugConsole::GetConsole()
  71. {
  72.     return gDebugConsole;
  73. }
  74.  
  75. //----------------------------------------------------------------------------------------
  76. // FW_CDebugConsole::SetConsole
  77. //----------------------------------------------------------------------------------------
  78.  
  79. FW_CDebugConsole* FW_CDebugConsole::SetConsole(FW_CDebugConsole* console)
  80. {
  81.     FW_CDebugConsole* prior = gDebugConsole;
  82.     gDebugConsole = console;
  83.     return prior;
  84. }
  85.  
  86. //----------------------------------------------------------------------------------------
  87. // FW_CDebugConsole::DoLogMessage
  88. //----------------------------------------------------------------------------------------
  89.  
  90. void FW_CDebugConsole::DoLogMessage(const char* message)
  91. {
  92.     PrivDebugMessage(message);
  93. }
  94.  
  95. //----------------------------------------------------------------------------------------
  96. // FW_CDebugConsole::DoDebugMessage
  97. //----------------------------------------------------------------------------------------
  98.  
  99. void FW_CDebugConsole::DoDebugMessage(const char* message)
  100. {
  101.     PrivDebugMessage(message);
  102. }
  103.  
  104. //----------------------------------------------------------------------------------------
  105. // FW_CDebugConsole::DoDebugger
  106. //----------------------------------------------------------------------------------------
  107.  
  108. void FW_CDebugConsole::DoDebugger()
  109. {
  110.     PrivDebugger();
  111. }
  112.  
  113. //----------------------------------------------------------------------------------------
  114. // FW_CDebugConsole::LogMessage
  115. //----------------------------------------------------------------------------------------
  116.  
  117. void FW_CDebugConsole::LogMessage(const char* message)
  118. {
  119.     FW_CDebugConsole *console = GetConsole();
  120.     if (console)
  121.         console->DoLogMessage(message);
  122.     else
  123.         PrivDebugMessage(message);
  124. }
  125.  
  126. //----------------------------------------------------------------------------------------
  127. // FW_CDebugConsole::DebugMessage
  128. //----------------------------------------------------------------------------------------
  129.  
  130. void FW_CDebugConsole::DebugMessage(const char* message)
  131. {
  132.     FW_CDebugConsole *console = GetConsole();
  133.     if (console)
  134.         console->DoDebugMessage(message);
  135.     else
  136.         PrivDebugMessage(message);
  137. }
  138.  
  139. //----------------------------------------------------------------------------------------
  140. // FW_CDebugConsole::Debugger
  141. //----------------------------------------------------------------------------------------
  142.  
  143. void FW_CDebugConsole::Debugger()
  144. {
  145.     FW_CDebugConsole *console = GetConsole();
  146.     if (console)
  147.         console->DoDebugger();
  148.     else
  149.         PrivDebugger();
  150. }
  151.  
  152. //----------------------------------------------------------------------------------------
  153. // FW_CDebugConsole::PrivDebugger
  154. //----------------------------------------------------------------------------------------
  155. void FW_CDebugConsole::PrivDebugger()
  156. {
  157. #if defined(FW_BUILD_WIN)
  158. #ifndef FW_BUILD_DOS
  159.     ::DebugBreak();
  160. #endif
  161.  
  162. #elif defined(FW_BUILD_MAC)
  163.     ::Debugger();
  164. #endif
  165. }
  166.  
  167. #if defined(FW_BUILD_MAC) && !defined(CGLUESUPPORTED)
  168. //----------------------------------------------------------------------------------------
  169. // fwctop
  170. //----------------------------------------------------------------------------------------
  171.  
  172. static void fwctop(char* s)
  173. {
  174.     int len = FW_PrimitiveStringLength(s);
  175.     FW_PrimitiveCopyMemory(s, s+1, len);
  176.     s[0] = len;
  177. }
  178.  
  179. //----------------------------------------------------------------------------------------
  180. // fwptoc
  181. //----------------------------------------------------------------------------------------
  182.  
  183. static void fwptoc(char* s)
  184. {
  185.     int len = s[0];
  186.     FW_PrimitiveCopyMemory(s+1, s, len);
  187.     s[len] = 0;
  188. }
  189.  
  190. //----------------------------------------------------------------------------------------
  191. // debugstr
  192. //----------------------------------------------------------------------------------------
  193. static void debugstr(const char *message)
  194. {
  195.     fwctop((char*) message);
  196.     DebugStr((const unsigned char*) message);
  197.     fwptoc((char*) message);
  198. }
  199. #endif
  200.  
  201. //----------------------------------------------------------------------------------------
  202. // FW_CDebugConsole::PrivDebugMessage
  203. //----------------------------------------------------------------------------------------
  204. void FW_CDebugConsole::PrivDebugMessage(const char *message)
  205. {
  206. #if defined(FW_BUILD_WIN)
  207. #ifndef FW_BUILD_DOS
  208.     ::OutputDebugString(message);
  209.     ::OutputDebugString("\n\r");
  210.     ::DebugBreak();
  211. #endif
  212.  
  213. #elif defined(FW_BUILD_MAC)
  214.     ::debugstr(message);
  215. #endif
  216. }
  217.  
  218.  
  219. #endif
  220.  
  221.